//封装分类数据业务相关的代码
import { getCategoryAPI } from '@/apis/category'
import { onMounted, ref, watch } from 'vue'
import { onBeforeRouteUpdate, useRoute } from 'vue-router'

export function useCategory() {
  //面包屑和分类
  const categoryData = ref({})

  //getCategoryAPI里有路由参数
  const route = useRoute()

  /* 
  //路由缓存问题：当路由path一样，参数不同的时候会选择直接复用路由对应的组件，组件的生命周期钩子不会被调用
  
  const  getCategory = async ()=>{
    //api里定义的是params参数
    const res = await getCategoryAPI(route.params.id)
    // console.log(res);
    categoryData.value = res.result
  }
  onMounted(()=>getCategory()) */


  //解决方法1：
  const getCategory = async (id = route.params.id) => { //id的默认参数
    const res = await getCategoryAPI(id)
    categoryData.value = res.result
  }
  onMounted(() => getCategory())
  onBeforeRouteUpdate((to) => {
    // console.log('路由变化了', to); //使用最新的路由参数请求最新的分类数据
    getCategory(to.params.id)
  })

  /* 
  //解决方法2：watch监视router
  const  getCategory = async ()=>{
    const res = await getCategoryAPI(route.params.id)
    categoryData.value = res.result
  }
  onMounted(()=>getCategory())
  watch(route,()=>getCategory()) */

  return {
    categoryData
  }
}